{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import tensorflow as tf"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'1.14.0'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.__version__"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "from tensorflow.examples.tutorials.mnist import input_data"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 数据导入"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "WARNING: Logging before flag parsing goes to stderr.\n",
      "W0705 10:39:20.910471 139703449126720 deprecation.py:323] From <ipython-input-4-593ef5062cb3>:2: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n",
      "W0705 10:39:20.911509 139703449126720 deprecation.py:323] From /home/wangxi/anaconda3/lib/python3.7/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please write your own downloading logic.\n",
      "W0705 10:39:20.913083 139703449126720 deprecation.py:323] From /home/wangxi/anaconda3/lib/python3.7/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting ./train-images-idx3-ubyte.gz\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "W0705 10:39:21.121262 139703449126720 deprecation.py:323] From /home/wangxi/anaconda3/lib/python3.7/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.data to implement this functionality.\n",
      "W0705 10:39:21.123071 139703449126720 deprecation.py:323] From /home/wangxi/anaconda3/lib/python3.7/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:110: dense_to_one_hot (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use tf.one_hot on tensors.\n",
      "W0705 10:39:21.168344 139703449126720 deprecation.py:323] From /home/wangxi/anaconda3/lib/python3.7/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Please use alternatives such as official/mnist/dataset.py from tensorflow/models.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting ./train-labels-idx1-ubyte.gz\n",
      "Extracting ./t10k-images-idx3-ubyte.gz\n",
      "Extracting ./t10k-labels-idx1-ubyte.gz\n"
     ]
    }
   ],
   "source": [
    "# 导入数据，onehot只对label做变换\n",
    "mnist = input_data.read_data_sets('.',one_hot=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n",
      " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n",
      " [0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n",
      " [0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]]\n"
     ]
    }
   ],
   "source": [
    "print(mnist.train.labels[:5])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 定义计算图中的数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义学习率\n",
    "learning_rate = tf.placeholder(tf.float32)\n",
    "# 定义输入数据、权重、偏置\n",
    "# placeholder和variable都是变量，只是placeholder需要运行时由外部提供，现在只是一个占位符\n",
    "# 而Variable则事先设置了初始值，但是仍然需要进行初始化操作\n",
    "x = tf.placeholder(tf.float32,[None,784],name='x')\n",
    "W = tf.Variable(tf.truncated_normal([784,10]),name='weight')\n",
    "b = tf.Variable(tf.zeros([10]),name='bias')\n",
    "\n",
    "# 计算logits，这里是单层神经网络，只是定义了计算图，不是真正的计算\n",
    "logits = tf.matmul(x,W) + b\n",
    "\n",
    "# 定义输出\n",
    "y = tf.placeholder(tf.float32,[None,10],name='y')\n",
    "\n",
    "# 定义softmax输出的交叉熵损失\n",
    "cross_enropy = tf.reduce_mean(\n",
    "    tf.nn.softmax_cross_entropy_with_logits_v2(labels=y,logits=logits))\n",
    "\n",
    "# 优化器,返回一个操作，没执行该操作一次，就是用一个batch的数据进行一个梯度下降优化\n",
    "# 同样只是定义的计算图，没有真正计算\n",
    "train_step = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_enropy)\n",
    "\n",
    "# 评估模型，准确率\n",
    "# argmax(y,1)表示取y中第二个维度的最大值的index\n",
    "# equal，进行对比，一样的表示预测正确，不一样，则是预测错误\n",
    "corret_prediction = tf.equal(tf.argmax(y,1),tf.argmax(logits,1))\n",
    "# 计算准确率，mean求一批训练的平均值，correctprediction中存的是bool值，cast转换成浮点数\n",
    "accuracy = tf.reduce_mean(tf.cast(corret_prediction,tf.float32))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.framework.ops.Graph at 0x7f0efbd4ad68>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 查看构建的计算图\n",
    "grap = tf.get_default_graph()\n",
    "grap"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "node {\n",
       "  name: \"Placeholder\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        unknown_rank: true\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"x\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 2\n",
       "          }\n",
       "        }\n",
       "        tensor_content: \"\\020\\003\\000\\000\\n\\000\\000\\000\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/mean\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/stddev\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 1.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/TruncatedNormal\"\n",
       "  op: \"TruncatedNormal\"\n",
       "  input: \"truncated_normal/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed2\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"truncated_normal/TruncatedNormal\"\n",
       "  input: \"truncated_normal/stddev\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal\"\n",
       "  op: \"Add\"\n",
       "  input: \"truncated_normal/mul\"\n",
       "  input: \"truncated_normal/mean\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight\"\n",
       "  input: \"truncated_normal\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"weight\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"zeros\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 10\n",
       "          }\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias\"\n",
       "  input: \"zeros\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"bias\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"MatMul\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x\"\n",
       "  input: \"weight/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"add\"\n",
       "  op: \"Add\"\n",
       "  input: \"MatMul\"\n",
       "  input: \"bias/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"y\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Rank\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Rank_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Sub/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Sub\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Rank_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Sub/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Slice/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Sub\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Slice/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Slice\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Shape_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Slice/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Slice/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/concat/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/concat/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/concat\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits/concat/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits/concat/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"add\"\n",
       "  input: \"softmax_cross_entropy_with_logits/concat\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Rank_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Shape_2\"\n",
       "  op: \"Shape\"\n",
       "  input: \"y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Sub_1/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Sub_1\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Rank_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Sub_1/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Slice_1/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Sub_1\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Slice_1/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Slice_1\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Shape_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Slice_1/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Slice_1/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/concat_1/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/concat_1/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/concat_1\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits/concat_1/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Slice_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits/concat_1/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"y\"\n",
       "  input: \"softmax_cross_entropy_with_logits/concat_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits\"\n",
       "  op: \"SoftmaxCrossEntropyWithLogits\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Reshape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Sub_2/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Sub_2\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Rank\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Sub_2/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Slice_2/begin\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Slice_2/size\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Sub_2\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Slice_2\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Slice_2/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Slice_2/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits/Reshape_2\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Slice_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean\"\n",
       "  op: \"Mean\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Reshape_2\"\n",
       "  input: \"Const\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/grad_ys_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 1.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Fill\"\n",
       "  op: \"Fill\"\n",
       "  input: \"gradients/Shape\"\n",
       "  input: \"gradients/grad_ys_0\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"index_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Reshape/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/Fill\"\n",
       "  input: \"gradients/Mean_grad/Reshape/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Tile\"\n",
       "  op: \"Tile\"\n",
       "  input: \"gradients/Mean_grad/Reshape\"\n",
       "  input: \"gradients/Mean_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tmultiples\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Shape_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Const\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Prod\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients/Mean_grad/Shape_1\"\n",
       "  input: \"gradients/Mean_grad/Const\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Const_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Prod_1\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients/Mean_grad/Shape_2\"\n",
       "  input: \"gradients/Mean_grad/Const_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Maximum/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Maximum\"\n",
       "  op: \"Maximum\"\n",
       "  input: \"gradients/Mean_grad/Prod_1\"\n",
       "  input: \"gradients/Mean_grad/Maximum/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/floordiv\"\n",
       "  op: \"FloorDiv\"\n",
       "  input: \"gradients/Mean_grad/Prod\"\n",
       "  input: \"gradients/Mean_grad/Maximum\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"gradients/Mean_grad/floordiv\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/truediv\"\n",
       "  op: \"RealDiv\"\n",
       "  input: \"gradients/Mean_grad/Tile\"\n",
       "  input: \"gradients/Mean_grad/Cast\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits/Reshape_2_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits/Reshape_2_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/Mean_grad/truediv\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits/Reshape_2_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/zeros_like\"\n",
       "  op: \"ZerosLike\"\n",
       "  input: \"softmax_cross_entropy_with_logits:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/ExpandDims/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/ExpandDims\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_grad/ExpandDims/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_grad/ExpandDims\"\n",
       "  input: \"softmax_cross_entropy_with_logits:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/LogSoftmax\"\n",
       "  op: \"LogSoftmax\"\n",
       "  input: \"softmax_cross_entropy_with_logits/Reshape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/Neg\"\n",
       "  op: \"Neg\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_grad/LogSoftmax\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/ExpandDims_1/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/ExpandDims_1\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_grad/ExpandDims_1/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/mul_1\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_grad/ExpandDims_1\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_grad/Neg\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_grad/mul\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_grad/mul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_grad/mul\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/softmax_cross_entropy_with_logits_grad/mul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_grad/mul_1\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/softmax_cross_entropy_with_logits_grad/mul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits/Reshape_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits/Reshape_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_grad/tuple/control_dependency\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits/Reshape_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"MatMul\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Shape_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 10\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/BroadcastGradientArgs\"\n",
       "  op: \"BroadcastGradientArgs\"\n",
       "  input: \"gradients/add_grad/Shape\"\n",
       "  input: \"gradients/add_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Sum\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits/Reshape_grad/Reshape\"\n",
       "  input: \"gradients/add_grad/BroadcastGradientArgs\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/add_grad/Sum\"\n",
       "  input: \"gradients/add_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Sum_1\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits/Reshape_grad/Reshape\"\n",
       "  input: \"gradients/add_grad/BroadcastGradientArgs:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/add_grad/Sum_1\"\n",
       "  input: \"gradients/add_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients/add_grad/Reshape\"\n",
       "  input: \"^gradients/add_grad/Reshape_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/add_grad/Reshape\"\n",
       "  input: \"^gradients/add_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/add_grad/Reshape\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/add_grad/Reshape_1\"\n",
       "  input: \"^gradients/add_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/add_grad/Reshape_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/MatMul\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"gradients/add_grad/tuple/control_dependency\"\n",
       "  input: \"weight/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/MatMul_1\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x\"\n",
       "  input: \"gradients/add_grad/tuple/control_dependency\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients/MatMul_grad/MatMul\"\n",
       "  input: \"^gradients/MatMul_grad/MatMul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/MatMul_grad/MatMul\"\n",
       "  input: \"^gradients/MatMul_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/MatMul_grad/MatMul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/MatMul_grad/MatMul_1\"\n",
       "  input: \"^gradients/MatMul_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/MatMul_grad/MatMul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent/update_weight/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"weight\"\n",
       "  input: \"Placeholder\"\n",
       "  input: \"gradients/MatMul_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent/update_bias/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"bias\"\n",
       "  input: \"Placeholder\"\n",
       "  input: \"gradients/add_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^GradientDescent/update_bias/ApplyGradientDescent\"\n",
       "  input: \"^GradientDescent/update_weight/ApplyGradientDescent\"\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"y\"\n",
       "  input: \"ArgMax/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_1/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_1\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"add\"\n",
       "  input: \"ArgMax_1/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Equal\"\n",
       "  op: \"Equal\"\n",
       "  input: \"ArgMax\"\n",
       "  input: \"ArgMax_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"Equal\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_BOOL\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean_1\"\n",
       "  op: \"Mean\"\n",
       "  input: \"Cast\"\n",
       "  input: \"Const_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "versions {\n",
       "  producer: 38\n",
       "}"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grap.as_graph_def()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 初始化计算图\n",
    "对定义的变量进行初始化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "sess = tf.Session()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 初始化计算图\n",
    "sess.run(tf.global_variables_initializer())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 运行计算图，并输出结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "##################################################\n",
      "step[10],entropy loss:[5.693897247314453]\n",
      "0.5\n",
      "0.4156\n",
      "##################################################\n",
      "step[20],entropy loss:[1.3983999490737915]\n",
      "0.78125\n",
      "0.5748\n",
      "##################################################\n",
      "step[30],entropy loss:[1.7634270191192627]\n",
      "0.78125\n",
      "0.6581\n",
      "##################################################\n",
      "step[40],entropy loss:[2.0671212673187256]\n",
      "0.84375\n",
      "0.7255\n",
      "##################################################\n",
      "step[50],entropy loss:[1.2201757431030273]\n",
      "0.84375\n",
      "0.7427\n",
      "##################################################\n",
      "step[60],entropy loss:[1.5033173561096191]\n",
      "0.875\n",
      "0.7393\n",
      "##################################################\n",
      "step[70],entropy loss:[1.339005947113037]\n",
      "0.875\n",
      "0.7569\n",
      "##################################################\n",
      "step[80],entropy loss:[1.9689977169036865]\n",
      "0.8125\n",
      "0.792\n",
      "##################################################\n",
      "step[90],entropy loss:[1.7758362293243408]\n",
      "0.90625\n",
      "0.7946\n",
      "##################################################\n",
      "step[100],entropy loss:[2.182446241378784]\n",
      "0.78125\n",
      "0.7927\n",
      "##################################################\n",
      "step[110],entropy loss:[1.5286080837249756]\n",
      "0.8125\n",
      "0.798\n",
      "##################################################\n",
      "step[120],entropy loss:[1.0010524988174438]\n",
      "0.9375\n",
      "0.8156\n",
      "##################################################\n",
      "step[130],entropy loss:[1.3820003271102905]\n",
      "0.84375\n",
      "0.8117\n",
      "##################################################\n",
      "step[140],entropy loss:[0.1379200518131256]\n",
      "1.0\n",
      "0.8236\n",
      "##################################################\n",
      "step[150],entropy loss:[0.9514043927192688]\n",
      "0.96875\n",
      "0.7837\n",
      "##################################################\n",
      "step[160],entropy loss:[1.415039300918579]\n",
      "0.96875\n",
      "0.8264\n",
      "##################################################\n",
      "step[170],entropy loss:[1.5466790199279785]\n",
      "0.90625\n",
      "0.8378\n",
      "##################################################\n",
      "step[180],entropy loss:[0.5092853903770447]\n",
      "0.96875\n",
      "0.8441\n",
      "##################################################\n",
      "step[190],entropy loss:[0.7974435091018677]\n",
      "0.9375\n",
      "0.8264\n",
      "##################################################\n",
      "step[200],entropy loss:[1.339070200920105]\n",
      "0.875\n",
      "0.8257\n",
      "##################################################\n",
      "step[210],entropy loss:[1.6433817148208618]\n",
      "0.84375\n",
      "0.819\n",
      "##################################################\n",
      "step[220],entropy loss:[1.031219720840454]\n",
      "0.90625\n",
      "0.8539\n",
      "##################################################\n",
      "step[230],entropy loss:[1.0140397548675537]\n",
      "0.875\n",
      "0.8431\n",
      "##################################################\n",
      "step[240],entropy loss:[1.235905408859253]\n",
      "0.9375\n",
      "0.8304\n",
      "##################################################\n",
      "step[250],entropy loss:[0.9977133870124817]\n",
      "0.9375\n",
      "0.8383\n",
      "##################################################\n",
      "step[260],entropy loss:[0.8352591395378113]\n",
      "0.875\n",
      "0.8475\n",
      "##################################################\n",
      "step[270],entropy loss:[0.6942734718322754]\n",
      "0.9375\n",
      "0.8528\n",
      "##################################################\n",
      "step[280],entropy loss:[0.28611594438552856]\n",
      "0.96875\n",
      "0.8511\n",
      "##################################################\n",
      "step[290],entropy loss:[0.4131608009338379]\n",
      "0.9375\n",
      "0.853\n",
      "##################################################\n",
      "step[300],entropy loss:[1.355231523513794]\n",
      "0.9375\n",
      "0.8272\n",
      "##################################################\n",
      "step[310],entropy loss:[0.724695086479187]\n",
      "0.84375\n",
      "0.8493\n",
      "##################################################\n",
      "step[320],entropy loss:[0.11178206652402878]\n",
      "1.0\n",
      "0.8538\n",
      "##################################################\n",
      "step[330],entropy loss:[1.6413805484771729]\n",
      "0.84375\n",
      "0.8606\n",
      "##################################################\n",
      "step[340],entropy loss:[0.7499553561210632]\n",
      "0.90625\n",
      "0.8239\n",
      "##################################################\n",
      "step[350],entropy loss:[0.8363097906112671]\n",
      "0.90625\n",
      "0.8672\n",
      "##################################################\n",
      "step[360],entropy loss:[0.4558735191822052]\n",
      "0.90625\n",
      "0.8643\n",
      "##################################################\n",
      "step[370],entropy loss:[0.874754786491394]\n",
      "0.90625\n",
      "0.8478\n",
      "##################################################\n",
      "step[380],entropy loss:[0.5375041365623474]\n",
      "0.96875\n",
      "0.8538\n",
      "##################################################\n",
      "step[390],entropy loss:[0.9383252859115601]\n",
      "0.90625\n",
      "0.8585\n",
      "##################################################\n",
      "step[400],entropy loss:[1.12501859664917]\n",
      "0.90625\n",
      "0.8714\n",
      "##################################################\n",
      "step[410],entropy loss:[0.2995681166648865]\n",
      "0.96875\n",
      "0.8406\n",
      "##################################################\n",
      "step[420],entropy loss:[1.507499098777771]\n",
      "0.875\n",
      "0.8628\n",
      "##################################################\n",
      "step[430],entropy loss:[1.0329701900482178]\n",
      "0.9375\n",
      "0.869\n",
      "##################################################\n",
      "step[440],entropy loss:[0.42809852957725525]\n",
      "0.96875\n",
      "0.8622\n",
      "##################################################\n",
      "step[450],entropy loss:[0.7290822863578796]\n",
      "0.90625\n",
      "0.8651\n",
      "##################################################\n",
      "step[460],entropy loss:[0.35548779368400574]\n",
      "1.0\n",
      "0.8685\n",
      "##################################################\n",
      "step[470],entropy loss:[0.3462373614311218]\n",
      "0.9375\n",
      "0.8638\n",
      "##################################################\n",
      "step[480],entropy loss:[1.2419188022613525]\n",
      "0.875\n",
      "0.8601\n",
      "##################################################\n",
      "step[490],entropy loss:[0.7953698635101318]\n",
      "0.90625\n",
      "0.8673\n",
      "##################################################\n",
      "step[500],entropy loss:[0.9672036170959473]\n",
      "0.9375\n",
      "0.8429\n",
      "##################################################\n",
      "step[510],entropy loss:[0.7641652822494507]\n",
      "0.96875\n",
      "0.8478\n",
      "##################################################\n",
      "step[520],entropy loss:[0.13221411406993866]\n",
      "1.0\n",
      "0.8615\n",
      "##################################################\n",
      "step[530],entropy loss:[0.9329346418380737]\n",
      "0.90625\n",
      "0.8674\n",
      "##################################################\n",
      "step[540],entropy loss:[0.934873640537262]\n",
      "0.9375\n",
      "0.8573\n",
      "##################################################\n",
      "step[550],entropy loss:[0.4084111154079437]\n",
      "0.96875\n",
      "0.8728\n",
      "##################################################\n",
      "step[560],entropy loss:[0.23186363279819489]\n",
      "1.0\n",
      "0.8654\n",
      "##################################################\n",
      "step[570],entropy loss:[0.2821848690509796]\n",
      "0.96875\n",
      "0.8736\n",
      "##################################################\n",
      "step[580],entropy loss:[0.9041970372200012]\n",
      "0.875\n",
      "0.8711\n",
      "##################################################\n",
      "step[590],entropy loss:[0.5668638944625854]\n",
      "0.96875\n",
      "0.8789\n",
      "##################################################\n",
      "step[600],entropy loss:[0.4183253347873688]\n",
      "0.96875\n",
      "0.8733\n",
      "##################################################\n",
      "step[610],entropy loss:[0.2310013473033905]\n",
      "1.0\n",
      "0.8587\n",
      "##################################################\n",
      "step[620],entropy loss:[0.5229207277297974]\n",
      "0.84375\n",
      "0.8681\n",
      "##################################################\n",
      "step[630],entropy loss:[0.7196753025054932]\n",
      "0.90625\n",
      "0.862\n",
      "##################################################\n",
      "step[640],entropy loss:[0.2783885598182678]\n",
      "1.0\n",
      "0.8816\n",
      "##################################################\n",
      "step[650],entropy loss:[0.6617645025253296]\n",
      "0.90625\n",
      "0.8745\n",
      "##################################################\n",
      "step[660],entropy loss:[1.0550734996795654]\n",
      "0.9375\n",
      "0.8647\n",
      "##################################################\n",
      "step[670],entropy loss:[0.11681293696165085]\n",
      "1.0\n",
      "0.8789\n",
      "##################################################\n",
      "step[680],entropy loss:[0.04270587116479874]\n",
      "1.0\n",
      "0.8841\n",
      "##################################################\n",
      "step[690],entropy loss:[1.2187402248382568]\n",
      "0.875\n",
      "0.86\n",
      "##################################################\n",
      "step[700],entropy loss:[0.9714252948760986]\n",
      "0.84375\n",
      "0.8791\n",
      "##################################################\n",
      "step[710],entropy loss:[1.0868767499923706]\n",
      "0.90625\n",
      "0.8636\n",
      "##################################################\n",
      "step[720],entropy loss:[0.03445141389966011]\n",
      "1.0\n",
      "0.8777\n",
      "##################################################\n",
      "step[730],entropy loss:[0.30677419900894165]\n",
      "1.0\n",
      "0.8748\n",
      "##################################################\n",
      "step[740],entropy loss:[0.2822183072566986]\n",
      "1.0\n",
      "0.8674\n",
      "##################################################\n",
      "step[750],entropy loss:[0.31000277400016785]\n",
      "0.96875\n",
      "0.8749\n",
      "##################################################\n",
      "step[760],entropy loss:[0.8383982181549072]\n",
      "0.90625\n",
      "0.8678\n",
      "##################################################\n",
      "step[770],entropy loss:[0.8084114789962769]\n",
      "0.90625\n",
      "0.879\n",
      "##################################################\n",
      "step[780],entropy loss:[0.3675338327884674]\n",
      "0.96875\n",
      "0.8821\n",
      "##################################################\n",
      "step[790],entropy loss:[0.7042039036750793]\n",
      "0.90625\n",
      "0.8883\n",
      "##################################################\n",
      "step[800],entropy loss:[0.5201921463012695]\n",
      "0.9375\n",
      "0.8768\n",
      "##################################################\n",
      "step[810],entropy loss:[0.5771898627281189]\n",
      "0.9375\n",
      "0.8861\n",
      "##################################################\n",
      "step[820],entropy loss:[1.9175236225128174]\n",
      "0.78125\n",
      "0.8525\n",
      "##################################################\n",
      "step[830],entropy loss:[0.2902490496635437]\n",
      "0.9375\n",
      "0.8728\n",
      "##################################################\n",
      "step[840],entropy loss:[0.2340807467699051]\n",
      "1.0\n",
      "0.8834\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "##################################################\n",
      "step[850],entropy loss:[1.059013843536377]\n",
      "0.96875\n",
      "0.8921\n",
      "##################################################\n",
      "step[860],entropy loss:[1.0675938129425049]\n",
      "0.90625\n",
      "0.875\n",
      "##################################################\n",
      "step[870],entropy loss:[0.548608660697937]\n",
      "0.9375\n",
      "0.882\n",
      "##################################################\n",
      "step[880],entropy loss:[0.225605309009552]\n",
      "1.0\n",
      "0.8734\n",
      "##################################################\n",
      "step[890],entropy loss:[0.7188082337379456]\n",
      "0.9375\n",
      "0.8874\n",
      "##################################################\n",
      "step[900],entropy loss:[0.26894819736480713]\n",
      "0.96875\n",
      "0.871\n",
      "##################################################\n",
      "step[910],entropy loss:[1.452536702156067]\n",
      "0.84375\n",
      "0.8692\n",
      "##################################################\n",
      "step[920],entropy loss:[0.1992373764514923]\n",
      "0.96875\n",
      "0.8696\n",
      "##################################################\n",
      "step[930],entropy loss:[0.7980636358261108]\n",
      "0.90625\n",
      "0.8836\n",
      "##################################################\n",
      "step[940],entropy loss:[0.4213390350341797]\n",
      "0.96875\n",
      "0.8657\n",
      "##################################################\n",
      "step[950],entropy loss:[0.3450782299041748]\n",
      "0.96875\n",
      "0.8818\n",
      "##################################################\n",
      "step[960],entropy loss:[0.6014574766159058]\n",
      "0.96875\n",
      "0.8869\n",
      "##################################################\n",
      "step[970],entropy loss:[0.1256301999092102]\n",
      "1.0\n",
      "0.8704\n",
      "##################################################\n",
      "step[980],entropy loss:[0.248045414686203]\n",
      "0.96875\n",
      "0.8814\n",
      "##################################################\n",
      "step[990],entropy loss:[0.25613611936569214]\n",
      "1.0\n",
      "0.8836\n",
      "##################################################\n",
      "step[1000],entropy loss:[0.48454660177230835]\n",
      "0.96875\n",
      "0.8894\n",
      "##################################################\n",
      "step[1010],entropy loss:[0.31363311409950256]\n",
      "0.9375\n",
      "0.8922\n",
      "##################################################\n",
      "step[1020],entropy loss:[0.04155253618955612]\n",
      "1.0\n",
      "0.8955\n",
      "##################################################\n",
      "step[1030],entropy loss:[0.9896014928817749]\n",
      "0.84375\n",
      "0.8958\n",
      "##################################################\n",
      "step[1040],entropy loss:[0.4855932593345642]\n",
      "0.90625\n",
      "0.897\n",
      "##################################################\n",
      "step[1050],entropy loss:[0.6579383611679077]\n",
      "0.875\n",
      "0.8991\n",
      "##################################################\n",
      "step[1060],entropy loss:[0.35982415080070496]\n",
      "0.875\n",
      "0.9007\n",
      "##################################################\n",
      "step[1070],entropy loss:[0.6390158534049988]\n",
      "0.9375\n",
      "0.897\n",
      "##################################################\n",
      "step[1080],entropy loss:[0.16373717784881592]\n",
      "0.96875\n",
      "0.8983\n",
      "##################################################\n",
      "step[1090],entropy loss:[0.44481223821640015]\n",
      "0.90625\n",
      "0.8957\n",
      "##################################################\n",
      "step[1100],entropy loss:[0.8858148455619812]\n",
      "0.90625\n",
      "0.8956\n",
      "##################################################\n",
      "step[1110],entropy loss:[0.15627779066562653]\n",
      "0.96875\n",
      "0.8961\n",
      "##################################################\n",
      "step[1120],entropy loss:[0.22474297881126404]\n",
      "0.9375\n",
      "0.9006\n",
      "##################################################\n",
      "step[1130],entropy loss:[0.20310518145561218]\n",
      "0.96875\n",
      "0.8963\n",
      "##################################################\n",
      "step[1140],entropy loss:[0.20352697372436523]\n",
      "0.96875\n",
      "0.8987\n",
      "##################################################\n",
      "step[1150],entropy loss:[0.31649908423423767]\n",
      "0.875\n",
      "0.8956\n",
      "##################################################\n",
      "step[1160],entropy loss:[0.5515749454498291]\n",
      "0.90625\n",
      "0.8988\n",
      "##################################################\n",
      "step[1170],entropy loss:[0.9050813913345337]\n",
      "0.9375\n",
      "0.8961\n",
      "##################################################\n",
      "step[1180],entropy loss:[0.5237827897071838]\n",
      "0.90625\n",
      "0.8973\n",
      "##################################################\n",
      "step[1190],entropy loss:[0.5686615109443665]\n",
      "0.875\n",
      "0.8998\n",
      "##################################################\n",
      "step[1200],entropy loss:[0.4118672311306]\n",
      "0.875\n",
      "0.8993\n",
      "##################################################\n",
      "step[1210],entropy loss:[0.4343803822994232]\n",
      "0.96875\n",
      "0.9021\n",
      "##################################################\n",
      "step[1220],entropy loss:[0.700827956199646]\n",
      "0.90625\n",
      "0.899\n",
      "##################################################\n",
      "step[1230],entropy loss:[0.851933479309082]\n",
      "0.90625\n",
      "0.8961\n",
      "##################################################\n",
      "step[1240],entropy loss:[1.1490459442138672]\n",
      "0.78125\n",
      "0.8971\n",
      "##################################################\n",
      "step[1250],entropy loss:[0.608396053314209]\n",
      "0.9375\n",
      "0.8961\n",
      "##################################################\n",
      "step[1260],entropy loss:[1.8059470653533936]\n",
      "0.8125\n",
      "0.8966\n",
      "##################################################\n",
      "step[1270],entropy loss:[0.5877417922019958]\n",
      "0.90625\n",
      "0.8951\n",
      "##################################################\n",
      "step[1280],entropy loss:[0.5527880191802979]\n",
      "0.875\n",
      "0.9023\n",
      "##################################################\n",
      "step[1290],entropy loss:[0.22160577774047852]\n",
      "0.96875\n",
      "0.9031\n",
      "##################################################\n",
      "step[1300],entropy loss:[0.3462820053100586]\n",
      "0.9375\n",
      "0.9011\n",
      "##################################################\n",
      "step[1310],entropy loss:[0.20499636232852936]\n",
      "0.96875\n",
      "0.9018\n",
      "##################################################\n",
      "step[1320],entropy loss:[0.24249106645584106]\n",
      "0.9375\n",
      "0.9035\n",
      "##################################################\n",
      "step[1330],entropy loss:[1.2450523376464844]\n",
      "0.875\n",
      "0.901\n",
      "##################################################\n",
      "step[1340],entropy loss:[0.568866491317749]\n",
      "0.9375\n",
      "0.8993\n",
      "##################################################\n",
      "step[1350],entropy loss:[0.9267419576644897]\n",
      "0.875\n",
      "0.896\n",
      "##################################################\n",
      "step[1360],entropy loss:[0.7354024648666382]\n",
      "0.875\n",
      "0.8983\n",
      "##################################################\n",
      "step[1370],entropy loss:[0.7897241711616516]\n",
      "0.90625\n",
      "0.8986\n",
      "##################################################\n",
      "step[1380],entropy loss:[0.5608903169631958]\n",
      "0.90625\n",
      "0.9024\n",
      "##################################################\n",
      "step[1390],entropy loss:[0.33223262429237366]\n",
      "0.90625\n",
      "0.8993\n",
      "##################################################\n",
      "step[1400],entropy loss:[0.9979692697525024]\n",
      "0.84375\n",
      "0.8977\n",
      "##################################################\n",
      "step[1410],entropy loss:[0.41039180755615234]\n",
      "0.96875\n",
      "0.9005\n",
      "##################################################\n",
      "step[1420],entropy loss:[0.022754715755581856]\n",
      "1.0\n",
      "0.8996\n",
      "##################################################\n",
      "step[1430],entropy loss:[0.44373494386672974]\n",
      "0.875\n",
      "0.9001\n",
      "##################################################\n",
      "step[1440],entropy loss:[0.22270885109901428]\n",
      "0.96875\n",
      "0.8949\n",
      "##################################################\n",
      "step[1450],entropy loss:[0.9342371225357056]\n",
      "0.78125\n",
      "0.8972\n",
      "##################################################\n",
      "step[1460],entropy loss:[0.5391939878463745]\n",
      "0.90625\n",
      "0.8975\n",
      "##################################################\n",
      "step[1470],entropy loss:[0.8256369233131409]\n",
      "0.8125\n",
      "0.8998\n",
      "##################################################\n",
      "step[1480],entropy loss:[0.8222682476043701]\n",
      "0.84375\n",
      "0.9022\n",
      "##################################################\n",
      "step[1490],entropy loss:[0.5567449331283569]\n",
      "0.9375\n",
      "0.9023\n",
      "##################################################\n",
      "step[1500],entropy loss:[0.283606618642807]\n",
      "0.9375\n",
      "0.9001\n",
      "##################################################\n",
      "step[1510],entropy loss:[0.17829535901546478]\n",
      "0.9375\n",
      "0.8977\n",
      "##################################################\n",
      "step[1520],entropy loss:[0.6458233594894409]\n",
      "0.90625\n",
      "0.8891\n",
      "##################################################\n",
      "step[1530],entropy loss:[0.051217179745435715]\n",
      "1.0\n",
      "0.8997\n",
      "##################################################\n",
      "step[1540],entropy loss:[0.6785773634910583]\n",
      "0.8125\n",
      "0.8995\n",
      "##################################################\n",
      "step[1550],entropy loss:[0.6822766065597534]\n",
      "0.9375\n",
      "0.9012\n",
      "##################################################\n",
      "step[1560],entropy loss:[0.1647823601961136]\n",
      "0.9375\n",
      "0.9004\n",
      "##################################################\n",
      "step[1570],entropy loss:[0.5874404907226562]\n",
      "0.9375\n",
      "0.8956\n",
      "##################################################\n",
      "step[1580],entropy loss:[0.386859655380249]\n",
      "0.9375\n",
      "0.8898\n",
      "##################################################\n",
      "step[1590],entropy loss:[0.500761091709137]\n",
      "0.90625\n",
      "0.9038\n",
      "##################################################\n",
      "step[1600],entropy loss:[0.7798430919647217]\n",
      "0.90625\n",
      "0.9028\n",
      "##################################################\n",
      "step[1610],entropy loss:[0.28177303075790405]\n",
      "0.9375\n",
      "0.904\n",
      "##################################################\n",
      "step[1620],entropy loss:[0.6394258737564087]\n",
      "0.8125\n",
      "0.9029\n",
      "##################################################\n",
      "step[1630],entropy loss:[0.3720235824584961]\n",
      "0.9375\n",
      "0.9039\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "##################################################\n",
      "step[1640],entropy loss:[0.32692816853523254]\n",
      "0.875\n",
      "0.9033\n",
      "##################################################\n",
      "step[1650],entropy loss:[0.026687894016504288]\n",
      "1.0\n",
      "0.9063\n",
      "##################################################\n",
      "step[1660],entropy loss:[0.7044776082038879]\n",
      "0.90625\n",
      "0.9042\n",
      "##################################################\n",
      "step[1670],entropy loss:[0.46279555559158325]\n",
      "0.90625\n",
      "0.9028\n",
      "##################################################\n",
      "step[1680],entropy loss:[0.6097135543823242]\n",
      "0.9375\n",
      "0.8976\n",
      "##################################################\n",
      "step[1690],entropy loss:[1.0765992403030396]\n",
      "0.875\n",
      "0.8983\n",
      "##################################################\n",
      "step[1700],entropy loss:[0.18195366859436035]\n",
      "0.90625\n",
      "0.9042\n",
      "##################################################\n",
      "step[1710],entropy loss:[0.6564656496047974]\n",
      "0.84375\n",
      "0.9015\n",
      "##################################################\n",
      "step[1720],entropy loss:[0.7611961364746094]\n",
      "0.84375\n",
      "0.9014\n",
      "##################################################\n",
      "step[1730],entropy loss:[0.325070321559906]\n",
      "0.90625\n",
      "0.9018\n",
      "##################################################\n",
      "step[1740],entropy loss:[0.49362969398498535]\n",
      "0.9375\n",
      "0.9045\n",
      "##################################################\n",
      "step[1750],entropy loss:[0.264107346534729]\n",
      "0.9375\n",
      "0.899\n",
      "##################################################\n",
      "step[1760],entropy loss:[0.1726597100496292]\n",
      "0.9375\n",
      "0.9029\n",
      "##################################################\n",
      "step[1770],entropy loss:[0.9428934454917908]\n",
      "0.875\n",
      "0.8986\n",
      "##################################################\n",
      "step[1780],entropy loss:[0.12123902142047882]\n",
      "0.9375\n",
      "0.9022\n",
      "##################################################\n",
      "step[1790],entropy loss:[1.2524969577789307]\n",
      "0.8125\n",
      "0.9012\n",
      "##################################################\n",
      "step[1800],entropy loss:[0.2477249950170517]\n",
      "0.96875\n",
      "0.9036\n",
      "##################################################\n",
      "step[1810],entropy loss:[0.22239702939987183]\n",
      "0.9375\n",
      "0.8991\n",
      "##################################################\n",
      "step[1820],entropy loss:[0.31627634167671204]\n",
      "0.96875\n",
      "0.9023\n",
      "##################################################\n",
      "step[1830],entropy loss:[0.4023728370666504]\n",
      "0.9375\n",
      "0.9029\n",
      "##################################################\n",
      "step[1840],entropy loss:[0.14766019582748413]\n",
      "0.96875\n",
      "0.9003\n",
      "##################################################\n",
      "step[1850],entropy loss:[0.9419535398483276]\n",
      "0.9375\n",
      "0.8949\n",
      "##################################################\n",
      "step[1860],entropy loss:[0.17588406801223755]\n",
      "0.9375\n",
      "0.9026\n",
      "##################################################\n",
      "step[1870],entropy loss:[0.18804854154586792]\n",
      "0.90625\n",
      "0.898\n",
      "##################################################\n",
      "step[1880],entropy loss:[0.7364798784255981]\n",
      "0.8125\n",
      "0.9028\n",
      "##################################################\n",
      "step[1890],entropy loss:[0.9563876986503601]\n",
      "0.8125\n",
      "0.9009\n",
      "##################################################\n",
      "step[1900],entropy loss:[0.39498370885849]\n",
      "0.9375\n",
      "0.9017\n",
      "##################################################\n",
      "step[1910],entropy loss:[0.608675479888916]\n",
      "0.9375\n",
      "0.8993\n",
      "##################################################\n",
      "step[1920],entropy loss:[0.23391926288604736]\n",
      "0.9375\n",
      "0.8969\n",
      "##################################################\n",
      "step[1930],entropy loss:[0.5460950136184692]\n",
      "0.875\n",
      "0.901\n",
      "##################################################\n",
      "step[1940],entropy loss:[0.2907979488372803]\n",
      "0.90625\n",
      "0.9001\n",
      "##################################################\n",
      "step[1950],entropy loss:[0.02585303969681263]\n",
      "1.0\n",
      "0.9009\n",
      "##################################################\n",
      "step[1960],entropy loss:[0.3880470395088196]\n",
      "0.96875\n",
      "0.9054\n",
      "##################################################\n",
      "step[1970],entropy loss:[0.5541461110115051]\n",
      "0.90625\n",
      "0.9013\n",
      "##################################################\n",
      "step[1980],entropy loss:[0.17865867912769318]\n",
      "0.96875\n",
      "0.9037\n",
      "##################################################\n",
      "step[1990],entropy loss:[0.4641305208206177]\n",
      "0.84375\n",
      "0.9011\n",
      "##################################################\n",
      "step[2000],entropy loss:[0.481466680765152]\n",
      "0.9375\n",
      "0.902\n",
      "##################################################\n",
      "step[2010],entropy loss:[0.32070228457450867]\n",
      "0.90625\n",
      "0.9027\n",
      "##################################################\n",
      "step[2020],entropy loss:[0.13886654376983643]\n",
      "0.96875\n",
      "0.9043\n",
      "##################################################\n",
      "step[2030],entropy loss:[0.013161882758140564]\n",
      "1.0\n",
      "0.9026\n",
      "##################################################\n",
      "step[2040],entropy loss:[0.42328062653541565]\n",
      "0.90625\n",
      "0.902\n",
      "##################################################\n",
      "step[2050],entropy loss:[0.6617576479911804]\n",
      "0.875\n",
      "0.9028\n",
      "##################################################\n",
      "step[2060],entropy loss:[0.6100097894668579]\n",
      "0.90625\n",
      "0.9031\n",
      "##################################################\n",
      "step[2070],entropy loss:[0.3046184182167053]\n",
      "0.90625\n",
      "0.9032\n",
      "##################################################\n",
      "step[2080],entropy loss:[0.22008377313613892]\n",
      "0.9375\n",
      "0.9043\n",
      "##################################################\n",
      "step[2090],entropy loss:[0.14339905977249146]\n",
      "0.96875\n",
      "0.9029\n",
      "##################################################\n",
      "step[2100],entropy loss:[0.6257215142250061]\n",
      "0.875\n",
      "0.9018\n",
      "##################################################\n",
      "step[2110],entropy loss:[0.330606073141098]\n",
      "0.9375\n",
      "0.9014\n",
      "##################################################\n",
      "step[2120],entropy loss:[0.4131595492362976]\n",
      "0.90625\n",
      "0.8999\n",
      "##################################################\n",
      "step[2130],entropy loss:[0.36847251653671265]\n",
      "0.875\n",
      "0.9031\n",
      "##################################################\n",
      "step[2140],entropy loss:[0.3474481999874115]\n",
      "0.9375\n",
      "0.9031\n",
      "##################################################\n",
      "step[2150],entropy loss:[0.22741952538490295]\n",
      "0.9375\n",
      "0.9037\n",
      "##################################################\n",
      "step[2160],entropy loss:[1.1231194734573364]\n",
      "0.875\n",
      "0.9047\n",
      "##################################################\n",
      "step[2170],entropy loss:[0.550373911857605]\n",
      "0.875\n",
      "0.9034\n",
      "##################################################\n",
      "step[2180],entropy loss:[0.6261996030807495]\n",
      "0.875\n",
      "0.9035\n",
      "##################################################\n",
      "step[2190],entropy loss:[0.34182044863700867]\n",
      "0.90625\n",
      "0.9051\n",
      "##################################################\n",
      "step[2200],entropy loss:[0.24356763064861298]\n",
      "0.90625\n",
      "0.9049\n",
      "##################################################\n",
      "step[2210],entropy loss:[0.7988983392715454]\n",
      "0.90625\n",
      "0.9042\n",
      "##################################################\n",
      "step[2220],entropy loss:[0.2310847043991089]\n",
      "0.90625\n",
      "0.9055\n",
      "##################################################\n",
      "step[2230],entropy loss:[0.4526084065437317]\n",
      "0.90625\n",
      "0.9048\n",
      "##################################################\n",
      "step[2240],entropy loss:[0.33920976519584656]\n",
      "0.90625\n",
      "0.9049\n",
      "##################################################\n",
      "step[2250],entropy loss:[0.553945779800415]\n",
      "0.78125\n",
      "0.9039\n",
      "##################################################\n",
      "step[2260],entropy loss:[0.3978232145309448]\n",
      "0.9375\n",
      "0.905\n",
      "##################################################\n",
      "step[2270],entropy loss:[0.34130170941352844]\n",
      "0.84375\n",
      "0.9037\n",
      "##################################################\n",
      "step[2280],entropy loss:[0.02913922816514969]\n",
      "1.0\n",
      "0.9043\n",
      "##################################################\n",
      "step[2290],entropy loss:[0.25485339760780334]\n",
      "0.9375\n",
      "0.9046\n",
      "##################################################\n",
      "step[2300],entropy loss:[0.8710538148880005]\n",
      "0.875\n",
      "0.905\n",
      "##################################################\n",
      "step[2310],entropy loss:[0.3563462495803833]\n",
      "0.875\n",
      "0.9062\n",
      "##################################################\n",
      "step[2320],entropy loss:[0.1328790932893753]\n",
      "0.96875\n",
      "0.9048\n",
      "##################################################\n",
      "step[2330],entropy loss:[0.8458143472671509]\n",
      "0.875\n",
      "0.9042\n",
      "##################################################\n",
      "step[2340],entropy loss:[0.7548593282699585]\n",
      "0.84375\n",
      "0.9034\n",
      "##################################################\n",
      "step[2350],entropy loss:[0.5877846479415894]\n",
      "0.84375\n",
      "0.9046\n",
      "##################################################\n",
      "step[2360],entropy loss:[0.19347520172595978]\n",
      "0.96875\n",
      "0.9048\n",
      "##################################################\n",
      "step[2370],entropy loss:[0.2815532386302948]\n",
      "0.9375\n",
      "0.9047\n",
      "##################################################\n",
      "step[2380],entropy loss:[0.15811878442764282]\n",
      "0.9375\n",
      "0.9038\n",
      "##################################################\n",
      "step[2390],entropy loss:[0.07072822004556656]\n",
      "1.0\n",
      "0.9052\n",
      "##################################################\n",
      "step[2400],entropy loss:[0.07772408425807953]\n",
      "0.96875\n",
      "0.9024\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "##################################################\n",
      "step[2410],entropy loss:[0.3523145318031311]\n",
      "0.875\n",
      "0.9039\n",
      "##################################################\n",
      "step[2420],entropy loss:[0.4107104539871216]\n",
      "0.875\n",
      "0.905\n",
      "##################################################\n",
      "step[2430],entropy loss:[0.2886297404766083]\n",
      "0.90625\n",
      "0.9051\n",
      "##################################################\n",
      "step[2440],entropy loss:[0.7555079460144043]\n",
      "0.8125\n",
      "0.9065\n",
      "##################################################\n",
      "step[2450],entropy loss:[0.1905021369457245]\n",
      "0.9375\n",
      "0.9045\n",
      "##################################################\n",
      "step[2460],entropy loss:[0.33203190565109253]\n",
      "0.9375\n",
      "0.9062\n",
      "##################################################\n",
      "step[2470],entropy loss:[0.6411107778549194]\n",
      "0.84375\n",
      "0.9043\n",
      "##################################################\n",
      "step[2480],entropy loss:[0.24500013887882233]\n",
      "0.9375\n",
      "0.9042\n",
      "##################################################\n",
      "step[2490],entropy loss:[0.7023376226425171]\n",
      "0.84375\n",
      "0.9029\n",
      "##################################################\n",
      "step[2500],entropy loss:[0.39801186323165894]\n",
      "0.84375\n",
      "0.9031\n",
      "##################################################\n",
      "step[2510],entropy loss:[0.7153204679489136]\n",
      "0.84375\n",
      "0.9036\n",
      "##################################################\n",
      "step[2520],entropy loss:[0.08959971368312836]\n",
      "0.96875\n",
      "0.9038\n",
      "##################################################\n",
      "step[2530],entropy loss:[0.1345720738172531]\n",
      "0.96875\n",
      "0.9043\n",
      "##################################################\n",
      "step[2540],entropy loss:[0.26769065856933594]\n",
      "0.90625\n",
      "0.9038\n",
      "##################################################\n",
      "step[2550],entropy loss:[0.08789633214473724]\n",
      "0.96875\n",
      "0.9064\n",
      "##################################################\n",
      "step[2560],entropy loss:[0.18096759915351868]\n",
      "0.96875\n",
      "0.9043\n",
      "##################################################\n",
      "step[2570],entropy loss:[0.05208958685398102]\n",
      "1.0\n",
      "0.9029\n",
      "##################################################\n",
      "step[2580],entropy loss:[0.8070120811462402]\n",
      "0.875\n",
      "0.9013\n",
      "##################################################\n",
      "step[2590],entropy loss:[1.7190101146697998]\n",
      "0.84375\n",
      "0.9045\n",
      "##################################################\n",
      "step[2600],entropy loss:[0.2725982069969177]\n",
      "0.9375\n",
      "0.9056\n",
      "##################################################\n",
      "step[2610],entropy loss:[0.11520574986934662]\n",
      "1.0\n",
      "0.9039\n",
      "##################################################\n",
      "step[2620],entropy loss:[0.37645065784454346]\n",
      "0.9375\n",
      "0.9061\n",
      "##################################################\n",
      "step[2630],entropy loss:[0.9025349617004395]\n",
      "0.84375\n",
      "0.906\n",
      "##################################################\n",
      "step[2640],entropy loss:[0.3309250771999359]\n",
      "0.9375\n",
      "0.9033\n",
      "##################################################\n",
      "step[2650],entropy loss:[0.7755181193351746]\n",
      "0.84375\n",
      "0.9038\n",
      "##################################################\n",
      "step[2660],entropy loss:[0.1132458746433258]\n",
      "0.96875\n",
      "0.9038\n",
      "##################################################\n",
      "step[2670],entropy loss:[0.64675372838974]\n",
      "0.84375\n",
      "0.9035\n",
      "##################################################\n",
      "step[2680],entropy loss:[0.17642459273338318]\n",
      "0.9375\n",
      "0.9067\n",
      "##################################################\n",
      "step[2690],entropy loss:[0.2086595743894577]\n",
      "0.9375\n",
      "0.9052\n",
      "##################################################\n",
      "step[2700],entropy loss:[0.21862953901290894]\n",
      "0.9375\n",
      "0.9038\n",
      "##################################################\n",
      "step[2710],entropy loss:[0.6732879281044006]\n",
      "0.84375\n",
      "0.9026\n",
      "##################################################\n",
      "step[2720],entropy loss:[0.4062144160270691]\n",
      "0.9375\n",
      "0.8992\n",
      "##################################################\n",
      "step[2730],entropy loss:[0.4850720167160034]\n",
      "0.90625\n",
      "0.9003\n",
      "##################################################\n",
      "step[2740],entropy loss:[0.3329780101776123]\n",
      "0.875\n",
      "0.905\n",
      "##################################################\n",
      "step[2750],entropy loss:[0.5572999715805054]\n",
      "0.875\n",
      "0.9058\n",
      "##################################################\n",
      "step[2760],entropy loss:[0.6116833686828613]\n",
      "0.84375\n",
      "0.904\n",
      "##################################################\n",
      "step[2770],entropy loss:[0.8085782527923584]\n",
      "0.90625\n",
      "0.9059\n",
      "##################################################\n",
      "step[2780],entropy loss:[0.23591932654380798]\n",
      "0.9375\n",
      "0.9059\n",
      "##################################################\n",
      "step[2790],entropy loss:[0.40699008107185364]\n",
      "0.90625\n",
      "0.9042\n",
      "##################################################\n",
      "step[2800],entropy loss:[0.24780701100826263]\n",
      "0.9375\n",
      "0.9038\n",
      "##################################################\n",
      "step[2810],entropy loss:[0.2834349572658539]\n",
      "0.90625\n",
      "0.9048\n",
      "##################################################\n",
      "step[2820],entropy loss:[0.10291966795921326]\n",
      "1.0\n",
      "0.9055\n",
      "##################################################\n",
      "step[2830],entropy loss:[0.36657869815826416]\n",
      "0.8125\n",
      "0.9055\n",
      "##################################################\n",
      "step[2840],entropy loss:[1.1410059928894043]\n",
      "0.875\n",
      "0.9046\n",
      "##################################################\n",
      "step[2850],entropy loss:[0.13688525557518005]\n",
      "0.9375\n",
      "0.9021\n",
      "##################################################\n",
      "step[2860],entropy loss:[0.10934814810752869]\n",
      "0.9375\n",
      "0.9032\n",
      "##################################################\n",
      "step[2870],entropy loss:[0.2811168432235718]\n",
      "0.90625\n",
      "0.9043\n",
      "##################################################\n",
      "step[2880],entropy loss:[0.4563583731651306]\n",
      "0.90625\n",
      "0.9039\n",
      "##################################################\n",
      "step[2890],entropy loss:[0.509942352771759]\n",
      "0.90625\n",
      "0.9038\n",
      "##################################################\n",
      "step[2900],entropy loss:[0.2635768949985504]\n",
      "0.96875\n",
      "0.9033\n",
      "##################################################\n",
      "step[2910],entropy loss:[0.6919237971305847]\n",
      "0.9375\n",
      "0.9032\n",
      "##################################################\n",
      "step[2920],entropy loss:[0.48526692390441895]\n",
      "0.8125\n",
      "0.9023\n",
      "##################################################\n",
      "step[2930],entropy loss:[0.39950764179229736]\n",
      "0.875\n",
      "0.9045\n",
      "##################################################\n",
      "step[2940],entropy loss:[0.22259756922721863]\n",
      "0.90625\n",
      "0.905\n",
      "##################################################\n",
      "step[2950],entropy loss:[0.22810471057891846]\n",
      "0.9375\n",
      "0.9036\n",
      "##################################################\n",
      "step[2960],entropy loss:[1.428767204284668]\n",
      "0.71875\n",
      "0.9049\n",
      "##################################################\n",
      "step[2970],entropy loss:[0.10613586753606796]\n",
      "0.96875\n",
      "0.9053\n",
      "##################################################\n",
      "step[2980],entropy loss:[0.7409461736679077]\n",
      "0.8125\n",
      "0.9044\n",
      "##################################################\n",
      "step[2990],entropy loss:[0.46148785948753357]\n",
      "0.9375\n",
      "0.9066\n",
      "##################################################\n",
      "step[3000],entropy loss:[0.6965827345848083]\n",
      "0.90625\n",
      "0.9037\n"
     ]
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "lr = 1.0\n",
    "# 存储计算值，用于画图\n",
    "train_a = []\n",
    "test_a = []\n",
    "train_loss = []\n",
    "# 训练模型\n",
    "# 分批次进行前向后向循环\n",
    "for step in range(3000):\n",
    "#     调整学习率\n",
    "    if step == 1000:\n",
    "        lr = 0.3\n",
    "    if step == 2000:\n",
    "        lr = 0.1\n",
    "#         32表示batch size，每批训练的数据量\n",
    "    batch_x,batch_y = mnist.train.next_batch(32)\n",
    "#     [train_step,cross_enropy]同时运行这两个计算图，并分别存储结果\n",
    "#     feed_dict：训练的数据\n",
    "    _,loss = sess.run([train_step,cross_enropy],\n",
    "    feed_dict={\n",
    "        x:batch_x,\n",
    "        y:batch_y,\n",
    "        learning_rate:lr\n",
    "    })\n",
    "    if (step+1) % 10 == 0:\n",
    "        train_accuracy = sess.run(accuracy,feed_dict={x:batch_x,y:batch_y})\n",
    "        test_accuracy = sess.run(accuracy,feed_dict={x:mnist.test.images,\n",
    "                                                     y:mnist.test.labels})\n",
    "        train_a.append(train_accuracy)\n",
    "        test_a.append(test_accuracy)\n",
    "        train_loss.append(loss)\n",
    "#         打印log\n",
    "        print('#' * 50)\n",
    "        print('step[{}],entropy loss:[{}]'.format(step + 1,loss))\n",
    "        print(train_accuracy)\n",
    "        print(test_accuracy)\n",
    "sess.close()\n",
    "# 再次运行该代码，会在之前学习的基础上继续迭代学习，除非重新运行整个代码"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 可视化运行结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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K2cjjV9ERAqsjOesqhtwtkbIrE5omEBjXWOeByUiUiauuAJWr/b3MRcsgFtuSfrrq6++mpdffpkFCxZQVVXFqFGjmDx5MqtXr+aFF17gPe95D2+88Qa9vb187nOf47LLLgNg+vTprFq1is7OTk477TTe9ra38dhjjzF16lR+97vfUVdXl/D5fvCDH3DHHXewb98+DjnkEO666y7q6+vZtm0bn/jEJ3jllVcA+N73vsdxxx3HnXfeyY033ogxhnnz5nHXXXdx8cUXc8YZZ3Duuc7SaaNGjaKzs5NHHnmEr33ta2mN/09/+hNf+tKXiEajtLS08MADDzB79mwee+wxxo8fT39/P7NmzeKJJ56gpaXFz3dERESgrDOrClazlaLBkjoBi4iEzw033MCaNWtYvXo1jzzyCO9+97tZs2bNwLIsK1asoKmpiZ6eHpYsWcI555xDc3PzkMfYsGEDv/jFL/jBD37Aeeedx69//WsuvPDChM/3vve9j0svvRSAa6+9lh/96EdcfvnlfPazn+Ud73gHv/nNb4hGo3R2drJ27Vquv/56/vGPf9DS0sLOnTtHfD1PPfXUiOPv7+/n0ksv5W9/+xszZsxg586dVFRUcOGFF/Kzn/2MK664ggcffJD58+crUBURCYqCVcnYCGXA7z3svXkekIhIGUmRAc2XpUuXDlk/9NZbb+U3v/kNAG+88QYbNmwYFqzOmDGDBQsWAHDUUUfx6quvJn38NWvWcO2119Le3k5nZyennnoqAA899BB33nknAJFIhLFjx3LnnXdy7rnnDgSMTU1Nvox/x44dvP3tbx+4nfu4H/nIRzj77LO54oorWLFiBZdccsmIzyciIllSsCoZ6+9PGKi2drfS2t2qzKqISMg1NDQMXH7kkUd48MEHefzxx6mvr+fEE09MuL5oTU3NwOVIJEJPT0/Sx7/44ov57W9/y/z58/nJT37CI488kvS21tqEy8RUVlbSH6sEstayb9++jMaf7HEPOOAAJk6cyEMPPcSTTz7Jz372s6RjExGRHJXxnNXye8V+iUYTZ1VbneZKClZFRMJl9OjR7NmzJ+HvOjo6aGxspL6+npdeeoknnngi5+fbs2cPkydPZv/+/UOCwZNPPpnvfe97gNMcaffu3Zx88sncc889tLW1AQyUAU+fPp2nn34agN/97nfs378/o/Efe+yx/PWvf2XTpk1DHhfgYx/7GBdeeCHnnXcekTI82y8ikjdlnFlVsJqt/v6EG4w6AYuIhFNzczPHH388Rx55JF/4wheG/G758lJTvDAAAA8oSURBVOX09fUxb948/tf/+l8cc8wxOT/fN77xDY4++mhOOeUUDjts8ATod77zHR5++GHmzp3LUUcdxdq1azniiCP48pe/zDve8Q7mz5/PlVdeCcCll17KX//6V5YuXcqTTz45JJuazvjHjx/PHXfcwfve9z7mz5/PBz7wgYH7nHXWWXR2dqoEWEQkaJWxYtgyDFaNtbbQYxhi8eLFdtWqVYUexsi+8AW47Tbo7h5y9Rcf+CK3PHkL3V/qJlJRfhuUiEhQXnzxRebMmVPoYUjMqlWr+PznP8/f//73lLfT+yYikqPeXqirgwsvhLvuKvRofGGMedpau3ik22nOaraSZFZ39uykpb5FgaqIiITWDTfcwPe+9z3NVRURyQeVAUvGkjRY6u7rpr6qvgADEhGRUvTpT3+aBQsWDPn34x//uNDDSunqq6/mtdde421ve1uhhyIiEn5lHKwqs5qtJA2WuvcrWBURkfTddttthR6CiIgUMzfmKMNgVZnVbCUpA1awKiIiIiIivopEtHSNZECZVRERERERyYdIRJlVyYAyqyIiIiIikg8KViUjyRosKVgVEQml9vZ2br/99qzue8stt9Adt9SZiIhI2urrneVryoyC1WxFownPbnTt61KwKiISQmEJVvv6+go9BBERydR998EVVxR6FHmnYDVbKTKrDVUNBRiQiIgE6eqrr+bll19mwYIFfOELX+Db3/42S5YsYd68eXz1q18FoKuri3e/+93Mnz+fI488krvvvptbb72VrVu3ctJJJ3HSSSclffxPfvKTLF68mCOOOGLg8QBWrlzJcccdx/z581m6dCl79uwhGo1y1VVXMXfuXObNm8d//dd/ATB9+nRaW1sBWLVqFSeeeCIA1113HZdddhnLli3jwx/+MK+++ionnHACixYtYtGiRTz22GMDz/etb32LuXPnMn/+/IHXvGjRooHfb9iwgaOOOsq3v6uIiKThuONg8uRCjyLvtHRNttRgSUSkYK740xWsfmu1r4+5YNICbll+S9Lf33DDDaxZs4bVq1fzl7/8hXvvvZennnoKay1nnXUWf/vb39ixYwdTpkzhD3/4AwAdHR2MHTuWm266iYcffpiWlpakj3/99dfT1NRENBrl5JNP5vnnn+ewww7jAx/4AHfffTdLlixh9+7d1NXVcccdd7Bp0yaeffZZKisr2blz54iv7+mnn+bRRx+lrq6O7u5uHnjgAWpra9mwYQMXXHABq1at4o9//CO//e1vefLJJ6mvr2fnzp00NTUxduxYVq9ePbAG7MUXX5zx31dERCRTClazlaDBUr/tp6evR8GqiEjI/eUvf+Evf/kLCxcuBKCzs5MNGzZwwgkncNVVV/HFL36RM844gxNOOCHtx7znnnu444476Ovr48033+SFF17AGMPkyZNZsmQJAGPGjAHgwQcf5BOf+ASVlc7XeFNT04iPf9ZZZ1EXm++0f/9+PvOZz7B69WoikQjr168feNxLLrmE+vr6IY/7sY99jB//+MfcdNNN3H333Tz11FNpvy4REZFsKVjNVoLMam9fL4CCVRGRgKXKgOaDtZZrrrmGj3/848N+9/TTT3P//fdzzTXXsGzZMr7yla+M+HibNm3ixhtvZOXKlTQ2NnLxxRfT29uLtRZjTMLnT3R9ZWUl/f39APT29g75XUPD4BSVm2++mYkTJ/Lcc8/R399PbW1tysc955xz+NrXvsY73/lOjjrqKJqbm0d8TSIiIrnSnNVsJcisdu93mmcoWBURCZ/Ro0ezZ88eAE499VRWrFhBZ2cnAFu2bGH79u1s3bqV+vp6LrzwQq666iqeeeaZYfdNZPfu3TQ0NDB27Fi2bdvGH//4RwAOO+wwtm7dysqVKwHYs2cPfX19LFu2jO9///sDzZLcMuDp06fz9NNPA/DrX/866fN1dHQwefJkKioquOuuu4hGowAsW7aMFStWDDSDch+3traWU089lU9+8pNccsklWfz1REREMqdgNVsJGiwpWBURCa/m5maOP/54jjzySB544AE++MEPcuyxxzJ37lzOPfdc9uzZwz//+U+WLl3KggULuP7667n22msBuOyyyzjttNOSNliaP38+Cxcu5IgjjuAjH/kIxx9/PADV1dXcfffdXH755cyfP59TTjmF3t5ePvaxj3HggQcyb9485s+fz89//nMAvvrVr/K5z32OE044gUiK9fg+9alP8dOf/pRjjjmG9evXD2Rdly9fzllnncXixYtZsGABN95448B9/uVf/gVjDMuWLfPl7ykiIjISY60t9BiGWLx4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\n",
      "text/plain": [
       "<Figure size 1152x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(16,6))\n",
    "plt.plot(np.arange(0,3000,10),train_a,c='r',label='train_accuracy')\n",
    "plt.plot(np.arange(0,3000,10),test_a,c='g',label='test_accuracy')\n",
    "# plt.plot(np.arange(0,3000,10),train_loss,c='b',label='train_loss')\n",
    "plt.ylim(0.7,1.02)\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "#### tensorflow的工作流程：\n",
    "- 根据数据的特性，明确分析的任务类型\n",
    "- 根据任务需求，制定使用的模型\n",
    "- 导入数据\n",
    "- 根据制定的模型，定义模型中的数据，包括变量和常量\n",
    "- 根据模型，制定优化的工作流，也就是计算图\n",
    "- 执行计算图，得到结果\n",
    "- 对结果进行评估   \n",
    "\n",
    "#### 对以上结果的分析：\n",
    "- 从最后的结果图片来看，模型对训练数据来说很不稳定，不断的震荡\n",
    "- 模型的测试数据的预测相对比较稳定，而且随着训练次数，准确率不断提高\n",
    "- 对训练数据，很多地方的准确率达到了100%，出现这个结果的原因为我们将图像的所有像素点的信息都输入模型训练了，所以模型会学习到图片的所有信息，包括噪声，而我们的图片真正有作用的信息只是图像中很少一部分像素点，所以这样就会出现过拟合现象"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 作业"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 对模型结构的理解\n",
    "- 该模型是单层神经网络，使用softmax输出结果，并使用交叉熵作为损失函数\n",
    "- 输入数据为28*28维，输出为10维\n",
    "- 该单层神经网络的权重参数维度为784*10，偏置维度为10维\n",
    "- 由于输入特征是一张张图片，所以这里将其拉平转换为一维数组，这样会损失图像的很多信息，比如位置，边缘等"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 对模型训练过程的理解\n",
    "- 由于这里是单层神经网络用作分类任务，其实就是等价于线性回归的结果直接输入softmax，也就是多分类的逻辑回归\n",
    "- 对于训练过程，总结如下：\n",
    "- - #### 前向传播：\n",
    "- - - 计算公式为logit = w * x + b，结果是一个10维的向量\n",
    "- - - 将logit输入到10维的softmax，公式为:$$ \\large{p_j = \\frac{exp(logit_j)}{\\sum_{i=0}^{9}exp(logit_i)}} $$,得到一个10维的概率值，其中最大的作为预测的分类\n",
    "- - - 计算交叉熵损失函数，公式为： $$\\large{cost = -\\sum_i y_i log(p_i)}$$,其中$ y_i $是groundthruth，$ p_i $是上一步求出的概率值\n",
    "- - #### 反向传播，梯度下降：\n",
    "- - - 由于只有一层神经网络，就是求损失函数对权重的梯度，用链式法则计算\n",
    "- - - $$ \\large{\\frac{\\partial cost}{\\partial \\omega} = \\frac{\\partial cost}{\\partial p}\\frac{\\partial p}{\\partial logit}\\frac{\\partial logit}{\\partial \\omega}} $$\n",
    "- - - 则权重的更新公式为：$$ \\large{\\omega_{t+1} = \\omega_t - learning\\_rate * \\frac{\\partial cost}{\\partial \\omega}} $$"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 对计算图的理解\n",
    "tensorflow意为张量流，在整个计算过程中，为了节约空间和提高性能，就节省了中间计算步骤。而这些节省步骤的优化操作，tensorflow帮我们处理的很好了，所以我们不需要关心。    \n",
    "我们需要做的就是定义好需要的计算流程，也就是计算图，然后就把他交给tensorflow进行优化，然后tensorflow会自动的以最优的方式来执行真正的计算，而这个中间的计算过程我们并不能看到，这也给我们调试程序带来了麻烦。    \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 解释这里的模型为什么比较差\n",
    "- 我们这里的模型是单层神经网络，其实就是多分类逻辑回归，是一个线性分类器\n",
    "- 我们的输入数据是图片，从直观上来讲，也不能用超平面进行分割，可以考虑多层神经网络训练，提高准确率\n",
    "- 我们将图片的数据直接粗暴的拉平成一维向量，直接当数值进行处理，这样会损失图片的很多信息，比如图片的旋转，大小缩放，边缘信息，位置信息等，这些对于图像来说很重要的信息在拉平后就不存在了。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
